﻿using System.Configuration;
//
namespace PerceptiveMCAPI
{
   internal class MCAPIconfig : ConfigurationElement
   {
      #region ------------------------------------------------------------------ API Control
      [ConfigurationProperty( "SecureAccess", DefaultValue = "False" )]
      internal string SecureAccess
      {
         get { return this["SecureAccess"] as string; }
      }
      [ConfigurationProperty( "Timeout", DefaultValue = "90000" )]
      internal string Timeout
      {
         get { return this["Timeout"] as string; }
      }
      // -- xmlrpc values
      [ConfigurationProperty( "UseStringTag", DefaultValue = "False" )]
      internal string UseStringTag
      {
         get { return this["UseStringTag"] as string; }
      }
      [ConfigurationProperty( "Indentation", DefaultValue = "0" )]
      internal string Indentation
      {
         get { return this["Indentation"] as string; }
      }
      [ConfigurationProperty( "EnableCompression", DefaultValue = "True" )]
      internal string EnableCompression
      {
         get { return this["EnableCompression"] as string; }
      }

      #endregion

      #region ------------------------------------------------------------------ wrapper defaults
      [ConfigurationProperty( "AccessType", DefaultValue = "XmlRpc" )]
      internal string AccessType
      {
         get { return this["AccessType"] as string; }
      }

      [ConfigurationProperty( "OutputType", DefaultValue = "XmlRpc" )]
      internal string OutputType
      {
         get
         {
            return this["OutputType"] as string;
         }
      }

      [ConfigurationProperty( "MethodType", DefaultValue = "POST" )]
      internal string MethodType
      {
         get
         {
            return this["MethodType"] as string;
         }
      }

      [ConfigurationProperty( "EncodeRequest", DefaultValue = "True" )]
      internal string EncodeRequest
      {
         get
         {
            return this["EncodeRequest"] as string;
         }
      }

      [ConfigurationProperty( "Validate", DefaultValue = "False" )]
      internal string Validate
      {
         get
         {
            return this["Validate"] as string;
         }
      }

      [ConfigurationProperty( "CustomErrorMessages", DefaultValue = "False" )]
      internal string CustomErrorMessages
      {
         get
         {
            return this["CustomErrorMessages"] as string;
         }
      }

      [ConfigurationProperty( "DataCenter", DefaultValue = "auto" )]
      internal string DataCenter
      {
         get
         {
            return this["DataCenter"] as string;
         }
      }
      // ------------------------------------------------------------------- general
      [ConfigurationProperty( "apikey", DefaultValue = "" )]
      internal string apikey
      {
         get
         {
            return this["apikey"] as string;
         }
      }
      #endregion

      #region --------------------------------------------------------------- security
      [ConfigurationProperty( "apikeys_expired", DefaultValue = "False" )]
      internal string apikeys_expired
      {
         get { return this["apikeys_expired"] as string; }
      }
      #endregion

      #region ---------------------------------------------------------------- helper
      [ConfigurationProperty( "inlineCss_strip_css", DefaultValue = "False" )]
      internal string inlineCss_strip_css
      {
         get { return this["inlineCss_strip_css"] as string; }
      }
      [ConfigurationProperty( "generateText_type", DefaultValue = "html" )]
      internal string generateText_type
      {
         get { return this["generateText_type"] as string; }
      }
      #endregion

      #region ---------------------------------------------------------------- list
      [ConfigurationProperty( "listUnsubscribe_delete_member", DefaultValue = "False" )]
      internal string listUnsubscribe_delete_member
      {
         get { return this["listUnsubscribe_delete_member"] as string; }
      }

      [ConfigurationProperty( "listUnsubscribe_send_goodbye", DefaultValue = "True" )]
      internal string listUnsubscribe_send_goodbye
      {
         get { return this["listUnsubscribe_send_goodbye"] as string; }
      }

      [ConfigurationProperty( "listUnsubscribe_send_notify", DefaultValue = "False" )]
      internal string listUnsubscribe_send_notify
      {
         get { return this["listUnsubscribe_send_notify"] as string; }
      }

      [ConfigurationProperty( "listSubscribe_email_type", DefaultValue = "html" )]
      internal string listSubscribe_email_type
      {
         get { return this["listSubscribe_email_type"] as string; }
      }

      [ConfigurationProperty( "listSubscribe_double_optin", DefaultValue = "True" )]
      internal string listSubscribe_double_optin
      {
         get { return this["listSubscribe_double_optin"] as string; }
      }

      [ConfigurationProperty( "listSubscribe_update_existing", DefaultValue = "False" )]
      internal string listSubscribe_update_existing
      {
         get { return this["listSubscribe_update_existing"] as string; }
      }

      [ConfigurationProperty( "listSubscribe_replace_interests", DefaultValue = "True" )]
      internal string listSubscribe_replace_interests
      {
         get { return this["listSubscribe_replace_interests"] as string; }
      }

      [ConfigurationProperty( "listSubscribe_send_welcome", DefaultValue = "False" )]
      internal string listSubscribe_send_welcome
      {
         get { return this["listSubscribe_send_welcome"] as string; }
      }

      [ConfigurationProperty( "listMembers_status", DefaultValue = "subscribed" )]
      internal string listMembers_status
      {
         get { return this["listMembers_status"] as string; }
      }
      // ----------------------------------------------------------- MergeVarAdd/Update
      [ConfigurationProperty( "listMergeVarAdd_field_type", DefaultValue = "text" )]
      internal string listMergeVarAdd_field_type
      {
         get { return this["listMergeVarAdd_field_type"] as string; }
      }
      //
      [ConfigurationProperty( "listMergeVarAdd_req", DefaultValue = "False" )]
      internal string listMergeVarAdd_req
      {
         get { return this["listMergeVarAdd_req"] as string; }
      }
      //
      [ConfigurationProperty( "listMergeVarAdd_public", DefaultValue = "True" )]
      internal string listMergeVarAdd_public
      {
         get { return this["listMergeVarAdd_public"] as string; }
      }
      //
      [ConfigurationProperty( "listMergeVarAdd_show", DefaultValue = "True" )]
      internal string listMergeVarAdd_show
      {
         get { return this["listMergeVarAdd_show"] as string; }
      }
      // ----------------------------------------------------------- Webhook Actions
      [ConfigurationProperty( "listWebhook_actions_subscribe", DefaultValue = "True" )]
      internal string listWebhook_actions_subscribe
      {
         get { return this["listWebhook_actions_subscribe"] as string; }
      }
      //
      [ConfigurationProperty( "listWebhook_actions_unsubscribe", DefaultValue = "True" )]
      internal string listWebhook_actions_unsubscribe
      {
         get { return this["listWebhook_actions_unsubscribe"] as string; }
      }
      //
      [ConfigurationProperty( "listWebhook_actions_profile", DefaultValue = "True" )]
      internal string listWebhook_actions_profile
      {
         get { return this["listWebhook_actions_profile"] as string; }
      }
      //
      [ConfigurationProperty( "listWebhook_actions_cleaned", DefaultValue = "True" )]
      internal string listWebhook_actions_cleaned
      {
         get { return this["listWebhook_actions_cleaned"] as string; }
      }
      //
      [ConfigurationProperty( "listWebhook_actions_upemail", DefaultValue = "True" )]
      internal string listWebhook_actions_upemail
      {
         get { return this["listWebhook_actions_upemail"] as string; }
      }

      // ----------------------------------------------------------- Webhook Sources
      [ConfigurationProperty( "listWebhook_sources_user", DefaultValue = "True" )]
      internal string listWebhook_sources_user
      {
         get { return this["listWebhook_sources_user"] as string; }
      }
      //
      [ConfigurationProperty( "listWebhook_sources_admin", DefaultValue = "True" )]
      internal string listWebhook_sources_admin
      {
         get { return this["listWebhook_sources_admin"] as string; }
      }
      //
      [ConfigurationProperty( "listWebhook_sources_api", DefaultValue = "False" )]
      internal string listWebhook_sources_api
      {
         get { return this["listWebhook_sources_api"] as string; }
      }

      #endregion

      #region -------------------------------------------------------------- campaign related
      [ConfigurationProperty( "campaignContent_for_archive", DefaultValue = "True" )]
      internal string campaignContent_for_archive
      {
         get { return this["campaignContent_for_archive"] as string; }
      }
      [ConfigurationProperty( "campaignSendTest_send_type", DefaultValue = "NotSpecified" )]
      internal string campaignSendTest_send_type
      {
         get { return this["campaignSendTest_send_type"] as string; }
      }
      //
      [ConfigurationProperty( "campaign_type", DefaultValue = "regular" )]
      internal string campaign_type
      { get { return this["campaign_type"] as string; } }
      [ConfigurationProperty( "campaign_tracking_opens", DefaultValue = "True" )]
      internal string campaign_tracking_opens
      { get { return this["campaign_tracking_opens"] as string; } }
      [ConfigurationProperty( "campaign_tracking_html_clicks", DefaultValue = "True" )]
      internal string campaign_tracking_html_clicks
      {
         get
         {
            return this["campaign_tracking_html_clicks"] as string;
         }
      }
      [ConfigurationProperty( "campaign_tracking_text_clicks", DefaultValue = "False" )]
      internal string campaign_tracking_text_clicks
      {
         get
         {
            return this["campaign_tracking_text_clicks"] as string;
         }
      }
      [ConfigurationProperty( "campaign_authenticate", DefaultValue = "False" )]
      internal string campaign_authenticate
      {
         get
         {
            return this["campaign_authenticate"] as string;
         }
      }
      [ConfigurationProperty( "campaign_inline_css", DefaultValue = "False" )]
      internal string campaign_inline_css
      {
         get
         {
            return this["campaign_inline_css"] as string;
         }
      }
      [ConfigurationProperty( "campaign_generate_text", DefaultValue = "False" )]
      internal string campaign_generate_text
      {
         get { return this["campaign_generate_text"] as string; }
      }
      [ConfigurationProperty( "campaign_auto_tweet", DefaultValue = "False" )]
      internal string campaign_auto_tweet
      {
         get { return this["campaign_auto_tweet"] as string; }
      }
      [ConfigurationProperty( "campaign_timewarp", DefaultValue = "False" )]
      internal string campaign_timewarp
      {
         get { return this["campaign_timewarp"] as string; }
      }
      [ConfigurationProperty( "campaign_ecomm360", DefaultValue = "False" )]
      internal string campaign_ecomm360
      {
         get { return this["campaign_ecomm360"] as string; }
      }
      //
      [ConfigurationProperty( "campaign_auto_footer", DefaultValue = "False" )]
      internal string campaign_auto_footer
      {
         get { return this["campaign_auto_footer"] as string; }
      }

      // campaign Rss options
      [ConfigurationProperty( "campaign_rss_schedule", DefaultValue = "daily" )]
      internal string campaign_rss_schedule
      {
         get { return this["campaign_rss_schedule"] as string; }
      }
      [ConfigurationProperty( "campaign_rss_schedule_hour", DefaultValue = "4" )]
      internal string campaign_rss_schedule_hour
      {
         get { return this["campaign_rss_schedule_hour"] as string; }
      }
      [ConfigurationProperty( "campaign_rss_schedule_weekday", DefaultValue = "1" )]
      internal string campaign_rss_schedule_weekday
      {
         get { return this["campaign_rss_schedule_weekday"] as string; }
      }
      [ConfigurationProperty( "campaign_rss_schedule_monthday", DefaultValue = "1" )]
      internal string campaign_rss_schedule_monthday
      {
         get { return this["campaign_rss_schedule_monthday"] as string; }
      }

      // campaign AB Split
      [ConfigurationProperty( "campaign_AB_pick_winner", DefaultValue = "opens" )]
      internal string campaign_AB_pick_winner
      {
         get { return this["campaign_AB_pick_winner"] as string; }
      }
      [ConfigurationProperty( "campaign_AB_wait_units", DefaultValue = "86400" )]
      internal string campaign_AB_wait_units
      {
         get { return this["campaign_AB_wait_units"] as string; }
      }
      [ConfigurationProperty( "campaign_AB_wait_time", DefaultValue = "1" )]
      internal string campaign_AB_wait_time
      {
         get { return this["campaign_AB_wait_time"] as string; }
      }
      [ConfigurationProperty( "campaign_AB_split_size", DefaultValue = "10" )]
      internal string campaign_AB_split_size
      {
         get { return this["campaign_AB_split_size"] as string; }
      }
      // campaignShareReport
      [ConfigurationProperty( "campaignShareReport_header_type", DefaultValue = "text" )]
      internal string campaignShareReport_header_type
      {
         get { return this["campaignShareReport_header_type"] as string; }
      }
      [ConfigurationProperty( "campaignShareReport_header_data", DefaultValue = "" )]
      internal string campaignShareReport_header_data
      {
         get { return this["campaignShareReport_header_data"] as string; }
      }
      [ConfigurationProperty( "campaignShareReport_secure", DefaultValue = "True" )]
      internal string campaignShareReport_secure
      {
         get { return this["campaignShareReport_secure"] as string; }
      }
      [ConfigurationProperty( "campaignShareReport_css_url", DefaultValue = "" )]
      internal string campaignShareReport_css_url
      {
         get { return this["campaignShareReport_css_url"] as string; }
      }

      #endregion

      #region ------------------------------------------------------------- default limits
      // Lists
      [ConfigurationProperty( "limit_listMembers", DefaultValue = "100" )]
      internal string limit_listMembers
      {
         get { return this["limit_listMembers"] as string; }
      }
      [ConfigurationProperty( "limit_listAbuseReports", DefaultValue = "500" )]
      internal string limit_listAbuseReports
      {
         get { return this["limit_listAbuseReports"] as string; }
      }
      // Campaigns & Stats
      [ConfigurationProperty( "limit_campaigns", DefaultValue = "25" )]
      internal string limit_campaigns
      {
         get { return this["limit_campaigns"] as string; }
      }
      //
      [ConfigurationProperty( "limit_campaignAbuseReports", DefaultValue = "500" )]
      internal string limit_campaignAbuseReports
      {
         get { return this["limit_campaignAbuseReports"] as string; }
      }
      [ConfigurationProperty( "limit_campaignBounceMessages", DefaultValue = "25" )]
      internal string limit_campaignBounceMessages
      {
         get { return this["limit_campaignBounceMessages"] as string; }
      }
      [ConfigurationProperty( "limit_campaignEcommOrders", DefaultValue = "100" )]
      internal string limit_campaignEcommOrders
      {
         get { return this["limit_campaignEcommOrders"] as string; }
      }
      [ConfigurationProperty( "limit_campaignHardBounces", DefaultValue = "1000" )]
      internal string limit_campaignHardBounces
      {
         get { return this["limit_campaignHardBounces"] as string; }
      }
      [ConfigurationProperty( "limit_campaignSoftBounces", DefaultValue = "1000" )]
      internal string limit_campaignSoftBounces
      {
         get { return this["limit_campaignSoftBounces"] as string; }
      }
      [ConfigurationProperty( "limit_campaignUnsubscribes", DefaultValue = "1000" )]
      internal string limit_campaignUnsubscribes
      {
         get { return this["limit_campaignUnsubscribes"] as string; }
      }
      // AIM
      [ConfigurationProperty( "limit_campaignClickDetailAIM", DefaultValue = "1000" )]
      internal string limit_campaignClickDetailAIM
      {
         get { return this["limit_campaignClickDetailAIM"] as string; }
      }
      [ConfigurationProperty( "limit_campaignEmailStatsAIMAll", DefaultValue = "100" )]
      internal string limit_campaignEmailStatsAIMAll
      {
         get { return this["limit_campaignEmailStatsAIMAll"] as string; }
      }
      [ConfigurationProperty( "limit_campaignNotOpenedAIM", DefaultValue = "1000" )]
      internal string limit_campaignNotOpenedAIM
      {
         get { return this["limit_campaignNotOpenedAIM"] as string; }
      }
      [ConfigurationProperty( "limit_campaignOpenedAIM", DefaultValue = "1000" )]
      internal string limit_campaignOpenedAIM
      {
         get { return this["limit_campaignOpenedAIM"] as string; }
      }
      #endregion
   }
}
